/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.DocumentoTabelaColunaModel;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Santos
 */
public class DocumentoTabelaColunaDAO extends AbstractDAO
        implements InterfaceDAO<List<br.com.documentar.model.DocumentoTabelaColunaModel>, br.com.documentar.model.DocumentoTabelaColunaModel> {


    @Override
    public boolean setDados(DocumentoTabelaColunaModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {

            case "I":
                sql = "INSERT INTO \n"
                        + "  `tlnk_doc_tab_col`\n"
                        + "(\n"
                        + "  `TLNK_DOCUMENTO_FK_PK`,\n"
                        + "  `TLNK_TABELA_FK_PK`,\n"
                        + "  `TLNK_COLUNA_FK_PK`) \n"
                        + "VALUE (\n"
                        + "  " + model.getDocumento().getCodigo() + ",\n"
                        + "  " + model.getTabela().getCodigo() + ",\n"
                        + "  " + model.getColuna().getCodigo() + ")";
                break;
            case "U":
                sql = "Não implementa";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tlnk_doc_tab_col` \n"
                        + "WHERE \n"
                        + "  `TLNK_TABELA_FK_PK` = " + model.getTabela().getCodigo() + " AND \n"
                        + "  `TLNK_COLUNA_FK_PK` = " + model.getColuna().getCodigo() + " AND \n"
                        + "  `TLNK_DOCUMENTO_FK_PK` = " + model.getDocumento().getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<DocumentoTabelaColunaModel> getDados(DocumentoTabelaColunaModel model) {
        model.setResultSet(null);
        model.getListaDocumentoTabelaColuna().clear();
        String sql = "SELECT \n"
                + "     `produto`.`TPRO_CODIGO_PK`,\n"
                + "     `produto`.`TPRO_NOME`,\n"
                + "	`versao`.`TVER_CODIGO_PK`,\n"
                + "     `versao`.`TVER_NOME`,\n"
                + "	`categoria`.`TCAT_CODIGO_PK`,\n"
                + "     `categoria`.`TCAT_NOME`,\n"
                + "     `tela`.`TTEL_CODIGO_PK`,\n"
                + "     COALESCE(`fnc_caminho_completo_tela`(`tela`.`TTEL_CODIGO_PK`),'RAIZ') CAMINHO_COMPLETO_TELA,\n"
                + "     `documento`.`TDOC_CODIGO_PK`,\n"
                + "     `documento`.`TDOC_CAMPO`,\n"
                + "     `docTabCol`.`TLNK_TABELA_FK_PK`,\n"
                + "     `tabela`.`TTAB_NOME`,\n"
                + "     `docTabCol`.`TLNK_COLUNA_FK_PK`,\n"
                + "     `coluna`.`TCOL_NOME`\n"
                + "FROM \n"
                + "  `tlnk_doc_tab_col` `docTabCol`\n"
                + "  inner join `tdoc_documento` `documento`\n"
                + "  on `docTabCol`.`TLNK_DOCUMENTO_FK_PK` = `documento`.`TDOC_CODIGO_PK`\n"
                + "\n"
                + "  inner join `tlnk_categoria_versao` `categoriaVersao`\n"
                + "  on `documento`.`TDOC_CATEGORIA_FK` = `categoriaVersao`.`TLNK_CATEGORIA_FK_PK`\n"
                + "  and `documento`.`TDOC_VERSAO_FK` = `categoriaVersao`.`TLNK_VERSAO_FK_PK`\n"
                + "  and `documento`.`TDOC_TELA_FK` = `categoriaVersao`.`TLNK_TELA_FK_PK`\n"
                + "\n"
                + "  inner join `tcat_categoria` `categoria`\n"
                + "  on `categoria`.`TCAT_CODIGO_PK` = `categoriaVersao`.`TLNK_CATEGORIA_FK_PK`\n"
                + "  \n"
                + "  inner join `tver_versao` `versao`\n"
                + "  on `categoriaVersao`.`TLNK_VERSAO_FK_PK` = `versao`.`TVER_CODIGO_PK`\n"
                + "\n"
                + "  inner join `tpro_produto` `produto`\n"
                + "  on `versao`.`TVER_PRODUTO_FK` = `produto`.`TPRO_CODIGO_PK`\n"
                + "\n"
                + "  left join `ttel_tela` `tela`\n"
                + "  on `categoriaVersao`.`TLNK_TELA_FK_PK` = `tela`.`TTEL_CODIGO_PK`\n"
                + "  and `categoriaVersao`.`TLNK_CATEGORIA_FK_PK` = `tela`.`TTEL_CATEGORIA_FK`\n"
                + "\n"
                + "  inner join `tlnk_tabela_versao` `tabelaVersao`\n"
                + "  on `versao`.`TVER_CODIGO_PK` = `tabelaVersao`.`TLNK_VERSAO_FK_PK`\n"
                + "  and `docTabCol`.`TLNK_TABELA_FK_PK` = `tabelaVersao`.`TLNK_TABELA_FK_PK`\n"
                + "\n"
                + "  inner join `ttab_tabela` `tabela`\n"
                + "  on `docTabCol`.`TLNK_TABELA_FK_PK` = `tabela`.`TTAB_CODIGO_PK`\n"
                + "\n"
                + "  inner join `tlnk_coluna_versao` `colunaVersao`\n"
                + "  on `versao`.`TVER_CODIGO_PK` = `colunaVersao`.`TLNK_VERSAO_FK_PK`\n"
                + "  and `docTabCol`.`TLNK_TABELA_FK_PK` = `colunaVersao`.`TLNK_TABELA_FK_PK`\n"
                + "  and `docTabCol`.`TLNK_COLUNA_FK_PK` = `colunaVersao`.`TLNK_COLUNA_FK_PK`\n"
                + "\n"
                + "  inner join `tcol_coluna` `coluna`\n"
                + "  on `docTabCol`.`TLNK_COLUNA_FK_PK` = `coluna`.`TCOL_CODIGO_PK`\n"
                + "  and `docTabCol`.`TLNK_TABELA_FK_PK` = `coluna`.`TCOL_TABELA_FK_PK`";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    model.setResultSet(Select(sql + " WHERE documento.TDOC_CAMPO LIKE '%" + model.getDocumento().getNomeCampo() + "%'", model.getNomeTela()));
                    break;
            }

            while (model.getResultSet().next()) {
                br.com.documentar.model.DocumentoTabelaColunaModel p = new br.com.documentar.model.DocumentoTabelaColunaModel();
                p.getProduto().setCodigo(rs.getInt("TPRO_CODIGO_PK"));
                p.getProduto().setNome(rs.getString("TPRO_NOME"));

                p.getCategoriaVersao().getVersao().setCodigo(rs.getInt("TVER_CODIGO_PK"));
                p.getCategoriaVersao().getVersao().setNome(rs.getString("TVER_NOME"));

                p.getCategoriaVersao().getCategoria().setCodigo(rs.getInt("TCAT_CODIGO_PK"));
                p.getCategoriaVersao().getCategoria().setNome(rs.getString("TCAT_NOME"));

                p.getTelaModel().setCodigo(rs.getInt("TTEL_CODIGO_PK"));
                p.getTelaModel().setNome(rs.getString("CAMINHO_COMPLETO_TELA"));

                p.getDocumento().setCodigo(rs.getInt("TDOC_CODIGO_PK"));
                p.getDocumento().setNomeCampo(rs.getString("TDOC_CAMPO"));

                p.getTabela().setCodigo(rs.getInt("TLNK_TABELA_FK_PK"));
                p.getTabela().setNome(rs.getString("TTAB_NOME"));

                p.getColuna().setCodigo(rs.getInt("TLNK_COLUNA_FK_PK"));
                p.getColuna().setNome(rs.getString("TCOL_NOME"));

                model.getListaDocumentoTabelaColuna().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        return model.getListaDocumentoTabelaColuna();
    }
}
